This page last changed on Aug 16, 2012 by headley.

This is useful for transferring binary files using minicom, for example when installing boot loaders.

===================
Set up raw binary transfers for minicom
===================
[Note, you need to disable the text output - I added a -q (quiet) option - see alternative version below]

Minicom is the defacto standard serial communication program for Linux, modeled after the old DOS program Telix.  While Minicom isn't as advanced as Telix, it does offer quite a bit of functionality that satisfies most common needs.  Unfortunately, it doesn't include a binary upload option.

While not commonly used, once in a while, you just need it.  Fortunately, Minicom does allow you to define your own file transfer utilities.  So here's a simple little script you can use that will give you a "binary upload" option in Minicom.  To make things a little prettier, I used a little utility called 'pv' so that you can get a progress bar while it transfers your file.
If you don't already have it, you should be able to find it easily within your Linux distribution:
On RPM-based systems, just type:
sudo yum install pv
On Debian-based systems, type:
sudo apt-get install pv
Now create this script, and place it in your ~/bin/ directory as (for example) bin-xfr.'

#!/bin/sh
INFILE=/dev/null
OUTFILE=/dev/null
 
while [ $# -gt 0 ]; do
 case "$1" in
 -i)
 shift
 INFILE="$1"
 ;;
 -o)
 shift
 OUTFILE="$1"
 ;;
 -h|--help)
 echo "$0 -i infile -o outfile"
 ;;
 *)
 INFILE="$1"
 esac
 shift
done
cat << EOF
binary-xfer utility for minicom
Sending file ${INFILE} to ${OUTFILE}
EOF
 
/usr/bin/pv --force -i 0.25 -B 128  ${INFILE}  2>&1 > ${OUTFILE}
# Use the line below if you don't have pv!
 
# /bin/cat ${INFILE} > ${OUTFILE}
cat << EOF
 
File transfer complete
EOF
sleep 1

Now go over to minicom and go to the configuration menu (via ESC-O), then "File transfer protocols". You can add a section there called "binary", point it at your file, and specify:
    •    Name: Binary
    •    Program: /home/MYUSERNAME/bin/bin-xfer -o %l
    •    Name: Y
    •    U/D:  U
    •    FullScr: Y
    •    IO-Red: N
    •    Multi:N

Then leave the menu and save your options.  Next time you send a file (via ESC-S), you should see "Binary" listed as an option.
[my alternative version]
#!/bin/sh
INFILE=/dev/null
OUTFILE=/dev/null
VERBOSE="TRUE"
 
while [ $# -gt 0 ]; do
 case "$1" in
 -i)
 shift
 INFILE="$1"
 ;;
 -o)
 shift
 OUTFILE="$1"
 ;;
 -q)
 VERBOSE="FALSE"
 ;;
 -h|--help)
 echo "$0 [-q] -i infile -o outfile"
 ;;
 *)
 INFILE="$1"
 esac
 shift
done

if [ ${VERBOSE} == "TRUE" ]
then
 cat << EOF
 binary-xfer utility for minicom
 Sending file ${INFILE} to ${OUTFILE}
EOF
fi
 
#/usr/bin/pv --force -i 0.25 -B 128  ${INFILE}  2>&1 > ${OUTFILE}
# Use the line below if you don't have pv!
 
 /bin/cat ${INFILE} > ${OUTFILE}

#cat << EOF
 
if [ ${VERBOSE} == "TRUE" ]
then
 File transfer complete
 EOF
fi

sleep 1
Document generated by Confluence on Feb 03, 2026 14:29